package com.xmtlxx.tms.domain.vo;

import com.xmtlxx.common.annotation.ExcelDictFormat;
import com.xmtlxx.common.convert.ExcelDictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 运单视图对象 t_waybill
 *
 * @author xmtlxx
 * @date 2022-08-15
 */
@Data
@ApiModel("运单视图对象")
@ExcelIgnoreUnannotated
public class WaybillVo {

    private static final long serialVersionUID = 1L;

    /**
     * 运单ID
     */
    @ExcelProperty(value = "运单ID")
    @ApiModelProperty("运单ID")
    private String id;

    /**
     * 订单ID
     */
    @ExcelProperty(value = "订单ID")
    @ApiModelProperty("订单ID")
    private String orderId;

    /**
     * 运单号
     */
    @ExcelProperty(value = "运单号")
    @ApiModelProperty("运单号")
    private String waybillNo;

    /**
     * 承运商ID
     */
    @ExcelProperty(value = "承运商ID")
    @ApiModelProperty("承运商ID")
    private String carrierId;

    /**
     * 车次ID
     */
    @ExcelProperty(value = "车次ID")
    @ApiModelProperty("车次ID")
    private String scheduleId;

    /**
     * 车辆ID
     */
    @ExcelProperty(value = "车辆ID")
    @ApiModelProperty("车辆ID")
    private String carId;

    /**
     * 车牌号
     */
    @ExcelProperty(value = "车牌号")
    @ApiModelProperty("车牌号")
    private String carNumber;

    /**
     * 驾驶员ID
     */
    @ExcelProperty(value = "驾驶员ID")
    @ApiModelProperty("驾驶员ID")
    private String driverId;

    /**
     * 驾驶员
     */
    @ExcelProperty(value = "驾驶员")
    @ApiModelProperty("驾驶员")
    private String driverName;

    /**
     * 派单时间
     */
    @ExcelProperty(value = "派单时间")
    @ApiModelProperty("派单时间")
    private Date dispatchTime;

    /**
     * 接单时间
     */
    @ExcelProperty(value = "接单时间")
    @ApiModelProperty("接单时间")
    private Date takeBillTime;

    /**
     * 取件时间
     */
    @ExcelProperty(value = "取件时间")
    @ApiModelProperty("取件时间")
    private Date takeTime;

    /**
     * 发车时间
     */
    @ExcelProperty(value = "发车时间")
    @ApiModelProperty("发车时间")
    private Date sendTime;

    /**
     * 派送时间
     */
    @ExcelProperty(value = "派送时间")
    @ApiModelProperty("派送时间")
    private Date deliverTime;

    /**
     * 送达时间
     */
    @ExcelProperty(value = "送达时间")
    @ApiModelProperty("送达时间")
    private Date arriveTime;

    /**
     * 作废时间
     */
    @ExcelProperty(value = "作废时间")
    @ApiModelProperty("作废时间")
    private Date cancelTime;

    /**
     * 状态
     */
    @ExcelProperty(value = "状态 ", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "tms_waybill_status")
    @ApiModelProperty("状态 ")
    private String status;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    @ApiModelProperty("备注")
    private String memo;

    /**
     * 回单号
     */
    @ExcelProperty(value = "回单号")
    @ApiModelProperty("回单号")
    private String receiptNo;

    /**
     * 回单附件
     */
    @ExcelProperty(value = "回单附件")
    @ApiModelProperty("回单附件")
    private String receiptPics;

    /**
     * 回单状态
     */
    @ExcelProperty(value = "回单状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "tms_receipt_status")
    @ApiModelProperty("回单状态")
    private String receiptStatus;

    /**
     * 调度员ID
     */
    @ExcelProperty(value = "调度员ID")
    @ApiModelProperty("调度员ID")
    private Long dispatcherId;

    /**
     * 调度员
     */
    @ExcelProperty(value = "调度员")
    @ApiModelProperty("调度员")
    private String dispatcher;

    /**
     * 签收人
     */
    @ExcelProperty(value = "签收人")
    @ApiModelProperty("签收人")
    private String signer;

    /**
     * 签收单位
     */
    @ExcelProperty(value = "签收单位")
    @ApiModelProperty("签收单位")
    private Long signDeptId;

    @ApiModelProperty("签收单位编号")
    private String signDeptNo;

    /**
     * 签收信息
     */
    @ExcelProperty(value = "签收信息")
    @ApiModelProperty("签收信息")
    private String signInfo;

    /**
     * 创建人
     */
    @ExcelProperty(value = "创建人")
    @ApiModelProperty("创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ExcelProperty(value = "更新人")
    @ApiModelProperty("更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @ExcelProperty(value = "更新时间")
    @ApiModelProperty("更新时间")
    private Date updateTime;

    @ApiModelProperty("订单id数组")
    private List<String> orderIds;

    @ApiModelProperty("车次名称")
    private String scheduleName;
    @ApiModelProperty("线路名称")
    private String lineName;
    @ApiModelProperty("承运商名称")
    private String carrierName;
    @ApiModelProperty("取件地址")
    private String sendAddr;
    @ApiModelProperty("收件地址")
    private String takeAddr;
    @ApiModelProperty("取件联系人")
    private String sendContacts;
    @ApiModelProperty("收件联系人")
    private String takeContacts;
    /**
     * 体积
     */
    @ApiModelProperty("体积")
    private BigDecimal volume;
    /**
     * 重量
     */
    @ApiModelProperty("重量")
    private BigDecimal weight;
    /**
     * 数量
     */
    @ApiModelProperty("数量")
    private Integer nums;
    /**
     * 到站时间
     */
    @ApiModelProperty("到站时间")
    private Date reachTime;

    @ApiModelProperty("订单编号")
    private String orderNo;

    @ApiModelProperty("运单明细")
    private List<WaybillDtlVo> items;
    @ApiModelProperty("运单日志")
    private List<WaybillLogVo> logItems;
    @ApiModelProperty("调度员ID")
    private Long dispatchId;
    @ApiModelProperty("车次日期")
    private String scheduleDayName;

    @ApiModelProperty("是否车辆")
    private String buss;

    //是否签收
    @ApiModelProperty("是否签收")
    private Boolean isShow = false;

    //其他判断
    @ApiModelProperty("其他判断")
    private Boolean isCarShow = false;

    //车辆当前流转状态
    @ApiModelProperty("车辆当前流转状态")
    private String carStatus;

    /**
     * 删除标识
     */
    @ExcelProperty(value = "删除标识", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_del_flag")
    @ApiModelProperty("删除标识")
    private String delFlag;

    private String month;
    private String dictLabel;
    private String dictValue;

    private String orderType;

    private String taskId;

    private Long storeDeptId;

    private String storeTel;

    private String orderStatus;

    private String sendTel;

    private String driverTel;

    private Boolean isArrive = true;
}
